LINQ (Language Integrated Query) একটি শক্তিশালী কুয়েরি প্রযুক্তি যা C# এবং .NET এ ডেটা কুয়েরি করতে ব্যবহৃত হয়। Entity Framework এর সাথে LINQ ব্যবহার করে আপনি ডেটাবেসের ডেটা সহজে ফিল্টার, গ্রুপ, এবং অর্ডার করতে পারেন। এটি ডেটাবেসে সিলেক্ট, ইনসার্ট, আপডেট এবং ডিলিট অপারেশনগুলির জন্য একটি অত্যন্ত কার্যকরী পদ্ধতি।
এখানে LINQ দিয়ে ফিল্টার, গ্রুপিং এবং অর্ডারিং কিভাবে করা যায় তা বিস্তারিতভাবে আলোচনা করা হবে।
LINQ-এ ফিল্টারিং করতে Where
মেথড ব্যবহার করা হয়, যা নির্দিষ্ট শর্তের ভিত্তিতে ডেটা নির্বাচন করতে সাহায্য করে।
ধরা যাক, আমরা একটি Student
Entity Class ব্যবহার করছি এবং আমরা তাদের মধ্যে ২০ বছরের বেশি বয়সী ছাত্রদের ফিল্টার করতে চাই।
using (var context = new SchoolContext())
{
var studentsAbove20 = context.Students
.Where(s => s.Age > 20) // বয়স ২০ এর বেশি
.ToList(); // লিস্টে রিটার্ন হবে
foreach (var student in studentsAbove20)
{
Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
}
}
এখানে:
Where
মেথডের মাধ্যমে Age > 20
শর্তে সমস্ত ছাত্র ফিল্টার করা হয়েছে।LINQ-এ গ্রুপিং করতে GroupBy
মেথড ব্যবহার করা হয়। এটি নির্দিষ্ট একটি প্রপার্টির ভিত্তিতে ডেটাকে গ্রুপ করে।
ধরা যাক, আমরা ছাত্রদের বয়স অনুযায়ী গ্রুপ করতে চাই।
using (var context = new SchoolContext())
{
var studentsGroupedByAge = context.Students
.GroupBy(s => s.Age) // বয়স অনুযায়ী গ্রুপ
.ToList();
foreach (var group in studentsGroupedByAge)
{
Console.WriteLine($"Age Group: {group.Key}"); // গ্রুপের বয়স
foreach (var student in group)
{
Console.WriteLine($"Name: {student.Name}");
}
}
}
এখানে:
GroupBy
মেথড ব্যবহার করে ছাত্রদের Age
প্রপার্টির ভিত্তিতে গ্রুপিং করা হয়েছে।group.Key
দ্বারা গ্রুপের বয়স (age) প্রিন্ট করা হচ্ছে।LINQ-এ অর্ডারিং করতে OrderBy
এবং OrderByDescending
মেথড ব্যবহার করা হয়। OrderBy
ব্যবহৃত হলে ডেটা অ্যাসেন্ডিং অর্ডারে সাজানো হয়, আর OrderByDescending
ব্যবহৃত হলে ডেটা ডেসেন্ডিং অর্ডারে সাজানো হয়।
ধরা যাক, আমরা ছাত্রদের নাম অনুযায়ী অ্যাসেন্ডিং অর্ডারে সাজাতে চাই।
using (var context = new SchoolContext())
{
var studentsOrderedByName = context.Students
.OrderBy(s => s.Name) // নাম অনুযায়ী অ্যাসেন্ডিং
.ToList();
foreach (var student in studentsOrderedByName)
{
Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
}
}
এখানে:
OrderBy
মেথডের মাধ্যমে ছাত্রদের নাম অনুযায়ী অ্যাসেন্ডিং অর্ডারে সাজানো হয়েছে।ধরা যাক, আমরা ছাত্রদের বয়স অনুযায়ী ডেসেন্ডিং অর্ডারে সাজাতে চাই।
using (var context = new SchoolContext())
{
var studentsOrderedByAgeDescending = context.Students
.OrderByDescending(s => s.Age) // বয়স অনুযায়ী ডেসেন্ডিং
.ToList();
foreach (var student in studentsOrderedByAgeDescending)
{
Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
}
}
এখানে:
OrderByDescending
মেথডের মাধ্যমে ছাত্রদের বয়স অনুযায়ী ডেসেন্ডিং অর্ডারে সাজানো হয়েছে।LINQ-এ আপনি একাধিক অপারেশন যেমন ফিল্টার, গ্রুপিং এবং অর্ডারিং একসাথে ব্যবহার করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো, যেখানে প্রথমে ছাত্রদের বয়স অনুযায়ী গ্রুপ করা হচ্ছে এবং তারপর প্রতিটি গ্রুপের ছাত্রদের নাম অনুযায়ী অ্যাসেন্ডিং অর্ডারে সাজানো হচ্ছে।
using (var context = new SchoolContext())
{
var groupedAndOrderedStudents = context.Students
.GroupBy(s => s.Age) // বয়স অনুযায়ী গ্রুপ
.OrderBy(g => g.Key) // গ্রুপের বয়স অনুযায়ী অর্ডার
.Select(g => new
{
Age = g.Key,
Students = g.OrderBy(s => s.Name) // নাম অনুযায়ী অর্ডার
})
.ToList();
foreach (var group in groupedAndOrderedStudents)
{
Console.WriteLine($"Age Group: {group.Age}");
foreach (var student in group.Students)
{
Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
}
}
}
এখানে:
GroupBy
দ্বারা ছাত্রদের বয়স অনুযায়ী গ্রুপিং করা হয়েছে।OrderBy
দিয়ে গ্রুপগুলিকে বয়স অনুযায়ী সাজানো হয়েছে।Select
মেথড ব্যবহার করে প্রতিটি গ্রুপের ছাত্রদের নাম অনুযায়ী অ্যাসেন্ডিং অর্ডারে সাজানো হয়েছে।LINQ ব্যবহার করে ডেটা ফিল্টার, গ্রুপ এবং অর্ডার করা খুবই সহজ এবং কার্যকর। আপনি Where
, GroupBy
, এবং OrderBy
মেথড ব্যবহার করে সহজেই ডেটাবেসে প্রয়োজনীয় কুয়েরি করতে পারেন। Entity Framework-এর সাথে LINQ ব্যবহার করলে ডেটাবেসে অপারেশনগুলো আরও বেশি কার্যকর এবং সুন্দরভাবে সম্পন্ন হয়, এবং আপনি আরও কম কোডে আরও বেশি কাজ করতে পারেন।
common.read_more